<?php

/**
 * Asignaciongrupo form.
 *
 * @package    ecampus
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class AsignaciongrupoForm extends BaseAsignaciongrupoForm
{
  public function configure()
  {
//      parent::configure();
//      $this->widgetSchema['id_alumno'] = new sfWidgetFormChoice(array(
//                            'choices' => array(1,2),
//                            'renderer_class' => 'sfWidgetFormSelectDoubleList')
//                            ,
//                            array(
//                                'label_associated' => 'a'
//                                )
//       );
      
      $this->setValidators(array(
      'id_asignacion' => new sfValidatorChoice(array('choices' => array($this->getObject()->get('id_asignacion')), 'empty_value' => $this->getObject()->get('id_asignacion'), 'required' => false)),
      'id_curso'      => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('Curso'), 'required' => false)),
      'id_grupo'      => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('Grupo'), 'required' => true),array('required' => 'Este campo es requerido')),
      'id_alumno'     => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('Alumno'), 'required' => true),array('required' => 'Este campo es requerido')),
    ));

   //   $this->widgetSchema->setLabel('id_grupo', 'Grupo');
     // $this->widgetSchema->setLabel('id_alumno', 'Alumnos');
      $this->widgetSchema['id_curso'] = new sfWidgetFormInputHidden();
      $this->widgetSchema->setLabel('id_curso', false);

//      $this->widgetSchema['id_alumno'] = new sfwidget;

      $this->validatorSchema->setPostValidator(
          new   sfValidatorCallback(array('callback' => array($this, 'checkAlumnoRepetido')))
                                               );
  }
  public function checkAlumnoRepetido($validator, $values)
  {
      if(Asignaciongrupo::alumnoRepetido($values['id_alumno'], $values['id_curso'], $values['id_grupo']))
      {
          throw new sfValidatorError($validator, 'El alumno ya se encuentra en el grupo');
      }
      return $values;
  }
  public function setCurso($id_curso)
  {
   $this->widgetSchema['id_curso'] = new sfWidgetFormInputHidden(array( 'default' => $id_curso), array() );
   $this->widgetSchema->setLabel('id_curso', false);


  //  $curso = Doctrine_Core::getTable('asignaciongrupo')->find($id_curso);
//      $cursos = $docente->getCursos();
      $grupos = Doctrine_Query::create()
            ->select('c.id_grupo id, c.nombre nombre')
              ->from('grupo c')
              ->where('c.id_curso = ?',$id_curso)
              ->fetchArray();

      foreach($grupos as $grupo)
      {
          $v_grupo[$grupo['id']] = $grupo['nombre'];
      }

      $this->widgetSchema['id_grupo'] = new sfWidgetFormChoice(array(
          'choices' => $v_grupo,
          'expanded' => false,
          'label' => 'Grupos'
      ));


        $alumnos = Doctrine_Query::create()
        ->select('c.id_alumno id')
          ->from('asignacionalumno c')
//                ->leftJoin('alumno a')
          ->where('c.id_curso = ?',$id_curso)
          ->fetchArray();

      foreach($alumnos as $alumno)
      {
          $obj_alumno = Doctrine_Core::getTable('alumno')->find($alumno['id']);
          $v_alumno[$alumno['id']] = $obj_alumno->getNombre() . " " . $obj_alumno->getApellido();
      }

      $this->widgetSchema['id_alumno'] = new sfWidgetFormChoice(array(
          'choices' => $v_alumno,
          'expanded' => false,
          'label' => 'Alumnos'
      ));

  
  }

//      public function  save(Doctrine_Connection $conn = null) {
//         parent::save($conn);
//      $this->notificarAlumnos();
//    }
//    public function notificarAlumnos()
//    {
//        $curso = $this->getCurso();
//        $alumnos = Doctrine_Core::getTable('asignacionalumno')->getAlumnos($this->getIdCurso());
//        $mensaje = sprintf("Ha sido asignado a un grupo para el curso %s",$curso->getNombre());
//        foreach ($alumnos as $alumno)
//        {
//            $a = $alumno->getAlumno();
//            $a->agregarAlerta($mensaje);
//        }
//    }
//    public function getCurso()
//    {
//        return Doctrine_Core::getTable('Curso')->find($this->getIdCurso());
//    }


}
